-
Notifications
You must be signed in to change notification settings - Fork 609
[Rule Tuning] Rapid Secret Retrieval Attempts from AWS SecretsManager #5291
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
This rule is quite loud in telemetry. However over 80% of alerts come from a single cluster, which seems to have a lot of role usage and operation-type IAM Users which assume other roles constantly. This makes me think the majority of these alerts may be from multiple role sessions retrieving secrets, rather than a single user retrieving multiple secrets rapidly. I've looked at the prod telemetry data we have access to and found a few instances where a single secret is accessed multiple times or certain AWS services retrieve multple secrets rapidly. All of these instances have been accounted for in the tunings here. - query has been changed to remove `GetBatchSecretValue` from the query since this API call actually calls the `GetSecretValue` for each of the secrets it's retrieving. So we only need to look for `GetSecretValue` - I've added the AWS services found in prod data that contribute to rapid secret retrieval - Changed the threshold parameters to look for a single `user.id` retrieving more than 20 unique secret values (`aws.cloudtrail.request_parameters`) - updated the description and investigation guide - reduced execution window
Rule: Tuning - GuidelinesThese guidelines serve as a reminder set of considerations when tuning an existing rule. Documentation and Context
Rule Metadata Checks
Testing and Validation
|
| field = ["user.id"] | ||
| value = 1 | ||
| [[rule.threshold.cardinality]] | ||
| field = "aws.cloudtrail.request_parameters" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Based on docs there could be VersionId or VersionStage in the request. Maybe we use aws.cloudtrail.flattened.request_parameters.secretId instead?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Trying to avoid using flattened fields unless absolutely necessary. I believe it is still valuable to alert if multiple versions and stages of a secret are being retrieved, so not sure it's necessary to eliminate these scenarios by using the flattened field. I didn't see any instances of this in the prod data cluster so it seems to be rare behavior maybe worth capturing. What do you think? @terrancedejesus
Pull Request
Issue link(s):
Summary - What I changed
This rule is quite loud in telemetry. However over 80% of alerts come from a single cluster, which seems to have a lot of role usage and operation-type IAM Users which assume other roles constantly. This makes me think the majority of these alerts may be from multiple role sessions retrieving secrets, rather than a single user retrieving multiple secrets rapidly. I've looked at the prod telemetry data we have access to and found a few instances where a single secret is accessed multiple times or certain AWS services retrieve multple secrets rapidly. All of these instances have been accounted for in the tunings here.
GetBatchSecretValuefrom the query since this API call actually calls theGetSecretValuefor each of the secrets it's retrieving. So we only need to look forGetSecretValueuser.idretrieving more than 20 unique secret values (aws.cloudtrail.request_parameters)How To Test
There's a duplicated version of this rule in our test stack with the updated query and threshold values.
This script will allow you to test 3 different scenarios:
BatchGetSecretValue(updated rule should still alert onGetSecretValuecalls)script: trigger_credential_access_rapid_secret_retrieval_attempts_from_secretsmanager.py
Screenshot of initial rule capturing multiple instances of a single secret being retrieved
Screenshot of
BatchGetSecretValueAPI call preceded by multipleGetSecretValuecallsScreenshot of original rule capturing all 3 test scenarios vs. updated rule capturing only the expected 2 scenarios